package cn.changeforyou.web.dao.mybatis.ext.metaInfo.condition;

import java.lang.annotation.Retention;
import java.lang.annotation.Target;

import static java.lang.annotation.ElementType.TYPE;
import static java.lang.annotation.RetentionPolicy.RUNTIME;

/**
 * select * from user where create_time between #{before} and #{after} and #{before} > '2017-01-02'
 * 表达between, Between可以任意传递一个between表达式
 * between 和 @condition 不同之处在于@between
 * 1. between语句本来就是跨字段的
 * 2. 规定解析中@
 * @author zhyu
 * @version 1.0
 * @date 2022/2/17 21:33
 */
@Target(TYPE)
@Retention(RUNTIME)
public @interface Between{

    /**
     * 给括号使用
     * @return
     */
    String key();

    /**
     * between 关键字左边的表达式, 如果是本类中的字段就在字段名的前面放#, 如果是本字段 #this
     * @return
     */
    String leftBetween();
    /**
     * and 关键字左边的表达式, 如果是本类中的字段就在字段名的前面放#, 如果是本字段 #this
     * @return
     */
    String leftAnd();

    /**
     * and 关键字右边的表达式, 如果是本类中的字段就在字段名的前面放#, 如果是本字段 #this
     * @return
     */
    String rightAnd();

    /**
     * 是否是not between
     * @return
     */
    boolean notBetween() default false;

    /**
     * 父括号的id 默认是0
     * @return
     */
    String parentKey() default "0";
}
